package com.yonyou.iuap.shell.util;

import java.math.BigDecimal;

public class ShellUtils {
	/**
	 * 返回文件大小的字符表现形式
	 * @param sizeL
	 * @return
	 */
	public static String getFileSize(long sizeL) {  
		double size=new Long(sizeL).doubleValue();
        //如果字节数少于1024，则直接以B为单位，否则先除于1024，后3位因太少无意义  
        if (size < 1024) {  
            return String.valueOf(size) + "B";  
        } else {  
            size = size / 1024;  
        }  
        //如果原字节数除于1024之后，少于1024，则可以直接以KB作为单位  
        //因为还没有到达要使用另一个单位的时候  
        //接下去以此类推  
        BigDecimal bd;
        if (size < 1024) {  
        	bd = new BigDecimal(size);  
            return String.valueOf(bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()) + "KB";  
        } else {  
            size = size / 1024;  
        }  
        if (size < 1024) {  
            //因为如果以MB为单位的话，要保留最后1位小数，  
            //因此，把此数乘以100之后再取余  
        	bd = new BigDecimal(size);  
            return String.valueOf(bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()) + "MB";  
        } else {  
            //否则如果要以GB为单位的，先除于1024再作同样的处理  
            bd = new BigDecimal(size/1024); 
            return String.valueOf(bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()) + "GB";  
        }  
    } 
	/**
	 * 获取远程主机的IP
	 * @param request
	 * @return
	 */
	public static String getRemoteHost(javax.servlet.http.HttpServletRequest request){
	    String ip = request.getHeader("x-forwarded-for");
	    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
	        ip = request.getHeader("Proxy-Client-IP");
	    }
	    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
	        ip = request.getHeader("WL-Proxy-Client-IP");
	    }
	    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
	        ip = request.getRemoteAddr();
	    }
	    return ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;
	}
}
